#include "UdpServer.hpp"

// ./UdpServer ip port//不需要指定ip地址，一个服务器可以有多个ip地址，比如公网和私网或者装2个网卡，
// 如果指定ip地址，服务器就只会接收来自其中一个ip地址的信息,并不会接受来自其它ip地址的信息，但其他ip地址也是服务器的ip，所有也需要接收
// ./UdpServer port
int main(int argc,char* argv[])
{
    ENABLE_CONSOLE_LOG();
    if(argc != 2)
    {
        LOG(LogLevel::ERROR) << "Usage : " << argv[0] << " localport ";
        Die(1);
    }

    uint16_t port = std::stoi(argv[1]);
    //用户管理模块
    std::shared_ptr<UserManage> um = std::make_shared<UserManage>();
    //网络模块
    std::unique_ptr<UdpServer> svr_uptr = std::make_unique<UdpServer>(port);
    
    svr_uptr->RegisterService([&um](InetAddr& id){ um->AddUser(id); },
                              [&um](int sockfd,const std::string& message){ um->Router(sockfd,message); },
                              [&um](InetAddr& id){ um->DelUser(id); });
    svr_uptr->InitServer();
    svr_uptr->Start();

    return 0;
}